Many of today's applications allow for dynamic, asynchronous data transfer, using multiple communication protocols and a variety of servers. Often, such applications gather data from distributed, heterogeneous sources. Clients having client-side functionality often also have server-side components, which may need additional processing before the server sends the data back to the client over a network. This separation of components over the network can cause latency that may affect the overall performance of an application that is executing on the network. Understanding the elements which contribute to this latency is important for developing and maintaining applications that must meet certain performance requirements.
In addition to performance issues caused by network latency, many application developers are now using new application technologies (such as Web 2.0 technologies) having features that enhance the interactivity of the user experience but at the cost of increasing network traffic. When compounded with network latency and bandwidth constraints, the large amounts of network traffic generated by these new technologies can create bottlenecks that can significantly impact system performance.
To accurately predict the performance of an application, the individual components of the application may be tested both during development and in a production environment. Generally, performance testing solutions create synthetic transactions involving virtual users (Vusers) on an emulated network in order to predict application performance in production.